package com.sheliduan.itlearning.common.utils;

import com.baomidou.mybatisplus.core.metadata.IPage;
import lombok.Data;

import java.util.List;
import java.util.Objects;

/**
 * @author: 断舍离
 * @date: 2025/2/13 9:20
 * @description: 统一响应分页数据类
 **/
@Data
public class PageResponseData<T> extends ResponseData<List<T>> {

    // 由于IPage返回的数据类型都是long, 为了避免强转这里属性也设置为long
    // 总记录数
    private long total;

    // 总页数
    private long pages;

    // 当前页码
    private long current;

    // 当前页显示记录数
    private long size;

    /*
    * page是MyBatis根据分页方法返回的分页对象, data是根据page转换的List数据
    * */
    public static <T> PageResponseData<T> success(IPage page, List<T> data) {
        PageResponseData<T> responseData = new PageResponseData<>();
        // 设置响应成功
        responseData.setSuccess(true);
        // 若接收的IPage对象为空, 设置默认值, 否则MyBatis分页对象Page中的值
        responseData.setCurrent(Objects.isNull(page) ? 1L: page.getCurrent());
        responseData.setSize(Objects.isNull(page) ? 10L: page.getSize());
        responseData.setPages(Objects.isNull(page) ? 0L: page.getPages());
        responseData.setTotal(Objects.isNull(page) ? 0L: page.getTotal());

        responseData.setData(data);
        return responseData;
    }
}
